package total;

import java.util.Scanner;

/**
 * Description:
 * 公司霸道总裁LQL一直在约女神，可女神总有这样那样的借口拒绝，
 * 可是这一次女神却奇迹般的答应一起到外面的草地上看星星，或许可能看到了他的优秀。
 * LQL欣喜若狂，可是问题来了，n*m的草地上存在部分虫子。为了有个美好的约，
 * LQL必须要用杀虫剂除掉所有的虫子，一瓶杀虫剂能杀光2*2内的所有虫子，
 * 但是他想知道最少用几瓶可以杀光所有虫子，你能帮他吗？
 * Input:
 * 多组测试数据，每组输入n和m，然后是n*m的矩阵草地，”.“表示没虫子，"o"表示有虫子
 * (2<=n<=8,2<=m<=8)
 * Output:
 * 输出最少要用的农药瓶数。
 * @author chenxiaokang
 *
 */

//mark
public class Ques1556 {
	
	int[][] vis = new int[10][10];
	char[][] a = new char[10][10];
	int m;
	int n;
	
	int result = 0;
	public int dfs(int deep){
		out: for(int i = 0;i < n;i ++){
			for(int j = 0;j < m;j ++){
				if(vis[i][j]==0 && a[i][j]=='o'){
					vis[i][j]++;
					vis[i+1][j]++;
					vis[i][j+1]++;
					vis[i+1][j+1]++;
					deep++;
					if(result < deep){
						result = deep;						
					}
					dfs(deep);
					break out;
				}
			}
		}
		return result;
	}
	
	public void go(){
		Scanner scan = new Scanner(System.in);
		while(scan.hasNext()){
			m = scan.nextInt();
			n = scan.nextInt();
			result = 0;
			for(int i = 0;i < m;i ++){
				String line = scan.next();
				for(int j = 0;j < n;j ++){
					a[i][j] = line.charAt(j);
				}
			}
			
			System.out.println(dfs(0));
		}
	}
	
	public static void main(String[] args) {
		new Ques1556().go();
	}
}
